package com.zr.dao;

import java.util.ArrayList;

import com.zr.model.Content;
import com.zr.model.CurrentContent;
import com.zr.model.Type;

/**
 * 操作数据库e_content表的接口
 * @author lf
 *
 */
public interface ContentDao {

	/**
	 * 获取所有知识的部分信息，展示
	 * @return
	 */
	public ArrayList<CurrentContent> getAllContent();
	
	/**
	 * 获取所有记录数
	 * @return 所有的记录数
	 */
	public int getAllCount();
	
	/**
	 * 分页显示数据
	 * @param page 页数
	 * @param pageSize 每页数量
	 * @return 该页的记录
	 */
	public ArrayList<CurrentContent> getContentByLimmit(int page,int pageSize);
	
	/**
	 * 通过知识标题，知识内容，发布日期，发布日期，状态查找符合的记录
	 * @param title 知识标题
	 * @param center 知识内容
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录数
	 */
	public ArrayList<CurrentContent> getContentByAll(String title,
			String center,String startDate,String endDate,String state,int page,int pageSize);
	
	/**
	 * 通过知识标题，知识内容，发布日期，发布日期，状态查找符合记录的条数
	 * @param title 知识标题
	 * @param center 知识内容
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 记录条数
	 */
	public int getCountByAll(String title,String center,String startDate,String endDate,String state);
	
	/**
	 * 通过知识内容，发布日期，发布日期，状态查找符合的记录
	 * @param center 知识内容
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录数
	 */
	public ArrayList<CurrentContent> getContentByCSES(String center,String startDate,String endDate,String state,int page,int pageSize);
	
	/**
	 * 通过知识内容，发布日期，发布日期，状态查找符合记录的数目
	 * @param center 知识内容
	 * @param startDate 发布日期
	 * @param endDate 发布日期
 	 * @param state 状态
 	 * @return 符合的记录数目
	 */
	public int getConuntByCSES(String center,String startDate,String endDate,String state);
	
	/**
	 * 通过知识标题，发布日期，发布日期，状态查找符合条件的记录
	 * @param title 知识标题
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录
	 */
	public ArrayList<CurrentContent> getContentByTSES(String title,String startDate,String endDate,String state,int page,int pageSize);
	
	/**
	 * 通过知识标题，发布日期，发布日期，状态查找符合条件的记录
	 * @param tilte 知识标题
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录数目
	 */
	public int getCountByTSES(String title,String startDate,String endDate,String state);
	
	/**
	 * 通过知识标题，知识内容，发布日期，状态查找符合条件的记录
	 * @param title 知识标题
	 * @param center 知识内 容
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录
	 */
	public ArrayList<CurrentContent> getContentByTCES(String title,String center,String endDate,String state,int page,int pageSize);
	
	/**
	 * 通过知识标题，知识内容，发布日期，状态查找符合条件的记录数目
	 * @param title 知识标题
	 * @param center 知识内容
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录数目
	 */
	public int getCountByTCES(String title,String center,String endDate,String state);
	
	/**
	 * 通过知识标题，知识内容，发布日期，状态查找符合条件的记录
	 * @param title 知识标题
	 * @param center 知识内容
	 * @param startDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录
	 */
	public ArrayList<CurrentContent> getContentByTCSS(String title,String center,String startDate,String state,int page,int pageSize);
	
	/**
	 * 通过知识标题，知识内容，发布日期，状态查找符合条件的记录数目
	 * @param title 知识标题 
	 * @param center 知识内容
	 * @param startDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录数目
	 */
	public int getCountByTCSS(String title,String center,String startDate,String state);
	
	/**
	 * 通过知识标题，知识内容，发布日期，发布日期查找符合条件的记录数目
	 * @param title 知识标题
	 * @param center 知识内容
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @return 符合条件的记录
	 */
	public ArrayList<CurrentContent> getContentByTCSE(String title,String center,String startDate,String endDate,int page,int pageSize);
	
	/**
	 * 通过知识标题，知识内容，发布日期，发布日期查找符合条件的记录数目
	 * @param title 知识标题
	 * @param center 知识内容
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @return 符合条件的记录数目
	 */
	public int getCountByTCSE(String title,String center,String startDate,String endDate);
	
	/**
	 * 通过发布日期，发布日期，状态查找符合条件的记录
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录
	 */
	public ArrayList<CurrentContent> getContentBySES(String startDate,String endDate,String state,int page,int pageSize);
	
	/**
	 * 通过发布日期，发布日期，状态查找符合条件的记录数目
	 * @param startDate 发布日期
	 * @param endDate 发布日期
	 * @param state 状态
	 * @return 符合条件的记录数目
	 */
	public int getCountBySES(String startDate,String endDate,String state);
	
	/**
	 * 通过知识类型查找数据，分页显示
	 * @param cname 知识类型
	 * @param page 页码
	 * @param pageSize 每页记录数
	 * @return 该页的记录
	 */
	public ArrayList<CurrentContent> getContentByCname(String cname,int page,int pageSize);
	
	/**
	 * 查询出知识类型下的记录数目
	 * @param cname 知识类型
	 * @return 记录数目
	 */
	public int getCountByCname(String cname);
	
	/**

	 * 通过cid获得知识内容

	 * @param cid  所需知识内容的cid

	 * @return 返回包含所有知识内容的Content对象

	 */
	public Content getContentByCid(int cid); 
	
	/**
	 * 通过只是标题获取知识
	 * @param ctitle 知识标题
	 * @return
	 */
	public ArrayList<CurrentContent> getContentByCtitle(String title,int page,int pageSize);
	public int getCountByCtitle(String title);

	public ArrayList<CurrentContent> getContentByCenter(String center,int page,int pageSize);
	public int getCountByCenter(String center);
	
	public ArrayList<CurrentContent> getContentByStartTime(String startTime,int page,int pageSize);
	public int getCountByStartTime(String title);
	
	public ArrayList<CurrentContent> getContentByEndTime(String endTime,int page,int pageSize);
	public int getCountByEndTime(String endTime);
	
	public ArrayList<CurrentContent> getContentByState(String state,int page,int pageSize);
	public int getCountByState(String state);
	
	/**

	 * 通过知识内容的cname获得相关知识内容游览量前十的Conten集合

	 * @param cname 显示在网页上知识内容的所属cname

	 * @return 与cname相关的游览量前十的知识内容集合

	 */
	public ArrayList<Content> getRelevantContentByCname(String cname,int cid);
	
	/**
	 * 获得知识内容中所有游览量最大的前5条
	 * @return 前5条content信息的数组
	 */
	public ArrayList<Type> getMaxNumberContent();
	
	/**
	 *  添加新content
	 * @param title Content标题
	 * @param abstract1 Content摘要
	 * @param type Content所属类型
	 * @param file Content内容
	 * @param special Content所属专题
	 */
	public void addContent(String title,String abstract1,String type,String file,String special);
	
	/**
	 * 通过cname获取对应的记录数
	 * @param string
	 * @return
	 */
	public int getCount(String cname);
	
	/**
	 * 将选择的Content逻辑删除
	 * @param cid
	 */
	public void deleteContent(int[] cid);

	/**
	 * 通过知识id删除知识(逻辑删除)
	 * @param cid
	 * @return 是否删除成功
	 */
	public boolean deleteContentByCid(int cid);
	
	/**
	 * 通过知识id修改知识
	 * @param cid
	 * @return
	 */
	public boolean updateContentByCid(int cid);

}
